import request from '@/config/axios'

// AI 视频 VO
export interface VideoVO {
  /*编号 */
  id: number

  /*用户编号 */
  userId: number

  /*封面地址 */
  coverUrl: string

  /*视频地址 */
  videoUrl: string

  /*状态.10-进行中. 20-成功. 30-失败 */
  status: number

  /*提示词 */
  prompt: string

  /*模型平台 */
  platform: string

  /*模型 */
  model: string

  /*是否发布 */
  publicStatus: boolean

  /*任务编号 */
  taskId: string

  /*创建时间 */
  createTime: string
}

export interface aiVideoGenerateReqVo {
  prompt: string // 提示词
  modelId: number // 模型
  size: string // 视频分辨率,示例值(1024x1024)
  generateMode: number // 生成模式:1-速度优先;2-质量优先,示例值(1)
}

// AI 图片 API
export const VideoApi = {
  /**
   * 获取【我的】视频分页
   * @param {string} userId 用户编号
   * @param {string} publicStatus 是否发布
   * @param {string} pageNo 页码，从 1 开始
   * @param {string} pageSize 每页条数，最大值为 100
   * @returns
   */
  queryVideos(params) {
    return request.get({ url: `/ai/video/my-page`, params })
  },
  /**
   * 删除【我的】视频记录
   * @param {string} id 视频编号
   * @returns
   */
  deleteVideoMy(id: number) {
    return request.delete({ url: `/ai/video/delete-my`, params: { id } })
  },
  /**
   * 视频生成
   * @param {object} params 管理后台 - AI 视频生成 Request VO
   * @param {number} params.modelId 模型编号
   * @param {number} params.generateMode 生成模式:1-速度优先;2-质量优先
   * @param {string} params.size 视频分辨率
   * @param {string} params.prompt 用于生成视频的内容提示
   * @returns
   */
  generateVideo(data: aiVideoGenerateReqVo) {
    return request.post({ url: `/ai/video/generate`, data })
  },
  /**
   * 查询视频进度
   * @param {string} id 视频编号
   * @returns
   */
  queryVideoProcess(id: number) {
    return request.post({
      url: `/ai/video/query_process`,
      params: {
        id
      }
    })
  },
  /**
   * 获取【我的】视频记录(状态)列表
   * @param {string} ids 视频编号数组
   * @returns
   */
  getVideoListMyByIds(ids: number[]) {
    return request.get({ url: `/ai/video/my-list-by-ids`, params: { ids: ids.join(',') } })
  }
}
